<?php
    /** widgets */
    if( function_exists('register_sidebar') ) {
        register_sidebar(array(
            'name' => 'First_sidebar',
            'before_widget' => '',
            'after_widget' => '',
            'before_title' => '<h4>',
            'after_title' => '</h4>'
        ));
        register_sidebar(array(
            'name' => 'Second_sidebar',
            'before_widget' => '',
            'after_widget' => '',
            'before_title' => '<h4>',
            'after_title' => '</h4>'
        ));
        register_sidebar(array(
            'name' => 'Third_sidebar',
            'before_widget' => '',
            'after_widget' => '',
            'before_title' => '<h4>',
            'after_title' => '</h4>'
        ));
        register_sidebar(array(
            'name' => 'Fourth_sidebar',
            'before_widget' => '',
            'after_widget' => '',
            'before_title' => '<h4>',
            'after_title' => '</h4>'
        ));
    }
    //二级分类
    register_nav_menus();
    /**
     * 友情链接
     */
    add_filter('pre_option_link_manager_enabled','__return_true');
    
    add_theme_support('post-thumbnails', array('post'));

    //搜索分页  
    function spar_pagenavi($wp_query, $perPage){   
        global $wp_query, $paged;  
        $max_page = ceil($wp_query->found_posts / $perPage);
        if ($max_page <= 1) {
            return;
        }
        if (empty($paged)) {
            $paged = 1;
        }

        //setting
        $prevNum = 4; //省略号前面页码数
        $midNum = 4;  //中间页码数
        $nextNum = 4; //省略号后面页码数

        $pageStr = '';

        //中间分页起始页码=当前页码-（中间页码个数 / 2），如果设置中间页码的个数没有余数则+1（即在偶数个数情况下，使当前页更靠左，比如 1 【2】 3 4）
        $midStartPage = $paged - floor($midNum / 2) + ($midNum % 2 == 0 ? 1 : 0);
        
        //中间分页结尾页码=当前页码+（中间页码个数 / 2）
        $midEndPage = $paged + floor($midNum / 2);

        //如果中间分页起始页码小于1，则将中间分页起始页码小于1的部分所占个数补给中间分页结尾页码，以保证中间分页显示个数不变
        if($midStartPage < 1){
            $midEndPage = $midEndPage - $midStartPage + 1;
        }

        //如果中间分页结尾页码大于1，则将中间分页结尾页码大于1的部分所占个数补给中间分页起始页码，以保证中间分页显示个数不变
        if($midEndPage > $max_page){
            $midStartPage = $midStartPage - ($midEndPage - $max_page);
        }

        //中间分页起始页码如果小于1,则变为1，否则不变
        $midStartPage = $midStartPage > 0 ? $midStartPage : 1;

        //中间分页结尾页码如果大于最大页码,则变为最大页码，否则不变
        $midEndPage = $midEndPage < $max_page ? $midEndPage : $max_page;

        //最大页码数大于1且当前页码大于1时显示上一页按钮
        if ($paged > 1) {
            $pageStr .= '<a class="prev" href="' . get_pagenum_link($paged - 1) . '" data-tag="prev">&lt;</a>';
        }

        //设置的两边页码显示个数大于0时执行
        $sideLeftEndPage = $prevNum; //左侧分页结尾页码
        $sideLeftEndPage = $sideLeftEndPage < $midStartPage ? $sideLeftEndPage : $midStartPage - 1; //左侧分页结尾页码如果大于或者等于中间分页的起始页码，则变为中间分页的起始页码减1（即左侧分页结尾页码一定要比中间分页的起始页码小）

        //左侧分页
        for ($i = 1; $i <= $sideLeftEndPage; $i++) {
            $pageStr .= '<a href="' . get_pagenum_link($i) . '" >' . $i . '</a>';
        }

        //如果中间起始页码和左侧分页的结尾页码的差值大于1，则显示省略号
        if($midStartPage - $sideLeftEndPage > 1){
            $pageStr .= '<span style="font-size: 18px;">...</span>';
        }

        //中间分页
        for ($j = $midStartPage; $j <= $midEndPage; $j++) {
            if($j == $paged){
                $pageStr .= '<a class="on" href="' . get_pagenum_link($j) . '" >' . $j . '</a>';
            }else{
                $pageStr .= '<a href="' . get_pagenum_link($j) . '">' . $j . '</a>';
            }
        }

        $sideRightStartPage = $max_page - $nextNum + 1;//右侧分页起始页码
        $sideRightStartPage = $sideRightStartPage > $midEndPage ? $sideRightStartPage : $midEndPage + 1;//右侧分页起始页码如果小于或者等于中间分页的结尾页码，则变为中间分页的结尾码加1（即右侧分页起始页码一定要比中间分页的结尾页码大）

        //如果中间起始页码和右侧分页的起始页码的差值大于1，则显示省略号
        if($sideRightStartPage - $midEndPage > 1){
            $pageStr .= '<span style="font-size: 18px;">...</span>';
        }

        //右侧分页
        for($k = $sideRightStartPage; $k <= $max_page; $k++){
            $pageStr .= '<a href="' . get_pagenum_link($k) . '">' . $k . '</a>';
        }

        //最大页码大于1且当前页码小于最大页码时显示下一页按钮
        if ($paged <= $max_page - 1) {
            $pageStr .= '<a class="next" href="' . get_pagenum_link($paged + 1) . '">&gt;</a>';
        }
    

        $pageStr .= '<span class="pagination-total">共<em>' . $max_page . '</em>页，</span>';

        $pageStr .= '<div class="pagination-input"><span>跳转至</span><input type="text"><span>页</span><a class="pagination-go" href="javascript:;">跳转</a></div>';

        echo $pageStr;
    }  
     //分页  
     function par_pagenavi($allsearch, $perPage){   
        global $wp_query, $paged;  
        $max_page = ceil($allsearch->post_count / $perPage);
        if ($max_page <= 1) {
            return;
        }
        if (empty($paged)) {
            $paged = 1;
        }

        //setting
        $prevNum = 4; //省略号前面页码数
        $midNum = 4;  //中间页码数
        $nextNum = 4; //省略号后面页码数

        $pageStr = '';

        //中间分页起始页码=当前页码-（中间页码个数 / 2），如果设置中间页码的个数没有余数则+1（即在偶数个数情况下，使当前页更靠左，比如 1 【2】 3 4）
        $midStartPage = $paged - floor($midNum / 2) + ($midNum % 2 == 0 ? 1 : 0);
        
        //中间分页结尾页码=当前页码+（中间页码个数 / 2）
        $midEndPage = $paged + floor($midNum / 2);

        //如果中间分页起始页码小于1，则将中间分页起始页码小于1的部分所占个数补给中间分页结尾页码，以保证中间分页显示个数不变
        if($midStartPage < 1){
            $midEndPage = $midEndPage - $midStartPage + 1;
        }

        //如果中间分页结尾页码大于1，则将中间分页结尾页码大于1的部分所占个数补给中间分页起始页码，以保证中间分页显示个数不变
        if($midEndPage > $max_page){
            $midStartPage = $midStartPage - ($midEndPage - $max_page);
        }

        //中间分页起始页码如果小于1,则变为1，否则不变
        $midStartPage = $midStartPage > 0 ? $midStartPage : 1;

        //中间分页结尾页码如果大于最大页码,则变为最大页码，否则不变
        $midEndPage = $midEndPage < $max_page ? $midEndPage : $max_page;

        //最大页码数大于1且当前页码大于1时显示上一页按钮
        if ($paged > 1) {
            $pageStr .= '<a class="prev" href="' . get_pagenum_link($paged - 1) . '" data-tag="prev">&lt;</a>';
        }

        //设置的两边页码显示个数大于0时执行
        $sideLeftEndPage = $prevNum; //左侧分页结尾页码
        $sideLeftEndPage = $sideLeftEndPage < $midStartPage ? $sideLeftEndPage : $midStartPage - 1; //左侧分页结尾页码如果大于或者等于中间分页的起始页码，则变为中间分页的起始页码减1（即左侧分页结尾页码一定要比中间分页的起始页码小）

        //左侧分页
        for ($i = 1; $i <= $sideLeftEndPage; $i++) {
            $pageStr .= '<a href="' . get_pagenum_link($i) . '" >' . $i . '</a>';
        }

        //如果中间起始页码和左侧分页的结尾页码的差值大于1，则显示省略号
        if($midStartPage - $sideLeftEndPage > 1){
            $pageStr .= '<span style="font-size: 18px;">...</span>';
        }

        //中间分页
        for ($j = $midStartPage; $j <= $midEndPage; $j++) {
            if($j == $paged){
                $pageStr .= '<a class="on" href="' . get_pagenum_link($j) . '" >' . $j . '</a>';
            }else{
                $pageStr .= '<a href="' . get_pagenum_link($j) . '">' . $j . '</a>';
            }
        }

        $sideRightStartPage = $max_page - $nextNum + 1;//右侧分页起始页码
        $sideRightStartPage = $sideRightStartPage > $midEndPage ? $sideRightStartPage : $midEndPage + 1;//右侧分页起始页码如果小于或者等于中间分页的结尾页码，则变为中间分页的结尾码加1（即右侧分页起始页码一定要比中间分页的结尾页码大）

        //如果中间起始页码和右侧分页的起始页码的差值大于1，则显示省略号
        if($sideRightStartPage - $midEndPage > 1){
            $pageStr .= '<span style="font-size: 18px;">...</span>';
        }

        //右侧分页
        for($k = $sideRightStartPage; $k <= $max_page; $k++){
            $pageStr .= '<a href="' . get_pagenum_link($k) . '">' . $k . '</a>';
        }

        //最大页码大于1且当前页码小于最大页码时显示下一页按钮
        if ($paged <= $max_page - 1) {
            $pageStr .= '<a class="next" href="' . get_pagenum_link($paged + 1) . '">&gt;</a>';
        }
    

        $pageStr .= '<span class="pagination-total">共<em>' . $max_page . '</em>页，</span>';

        $pageStr .= '<div class="pagination-input"><span>跳转至</span><input type="text"><span>页</span><a class="pagination-go" href="javascript:;">跳转</a></div>';

        echo $pageStr;
    }  

    //留言板的分页
    function par_pagenaviComment(){   
        $max_page = get_comment_pages_count();
        $page = get_query_var('cpage');
        if ($max_page <= 1) {
            return;
        }

        //setting
        $prevNum = 4; //省略号前面页码数
        $midNum = 4;  //中间页码数
        $nextNum = 4; //省略号后面页码数

        $pageStr = '';

        //中间分页起始页码=当前页码-（中间页码个数 / 2），如果设置中间页码的个数没有余数则+1（即在偶数个数情况下，使当前页更靠左，比如 1 【2】 3 4）
        $midStartPage = $page - floor($midNum / 2) + ($midNum % 2 == 0 ? 1 : 0);
        
        //中间分页结尾页码=当前页码+（中间页码个数 / 2）
        $midEndPage = $page + floor($midNum / 2);

        //如果中间分页起始页码小于1，则将中间分页起始页码小于1的部分所占个数补给中间分页结尾页码，以保证中间分页显示个数不变
        if($midStartPage < 1){
            $midEndPage = $midEndPage - $midStartPage + 1;
        }

        //如果中间分页结尾页码大于1，则将中间分页结尾页码大于1的部分所占个数补给中间分页起始页码，以保证中间分页显示个数不变
        if($midEndPage > $max_page){
            $midStartPage = $midStartPage - ($midEndPage - $max_page);
        }

        //中间分页起始页码如果小于1,则变为1，否则不变
        $midStartPage = $midStartPage > 0 ? $midStartPage : 1;

        //中间分页结尾页码如果大于最大页码,则变为最大页码，否则不变
        $midEndPage = $midEndPage < $max_page ? $midEndPage : $max_page;

        //最大页码数大于1且当前页码大于1时显示上一页按钮
        if ($page > 1) {
            $pageStr .= '<a class="prev" href="' . get_comments_pagenum_link($page - 1) . '" data-tag="prev">&lt;</a>';
        }
        

        //设置的两边页码显示个数大于0时执行
        $sideLeftEndPage = $prevNum; //左侧分页结尾页码
        $sideLeftEndPage = $sideLeftEndPage < $midStartPage ? $sideLeftEndPage : $midStartPage - 1; //左侧分页结尾页码如果大于或者等于中间分页的起始页码，则变为中间分页的起始页码减1（即左侧分页结尾页码一定要比中间分页的起始页码小）

        //左侧分页
        for ($i = 1; $i <= $sideLeftEndPage; $i++) {
            $pageStr .= '<a href="' . get_comments_pagenum_link($i) . '" >' . $i . '</a>';
        }

        //如果中间起始页码和左侧分页的结尾页码的差值大于1，则显示省略号
        if($midStartPage - $sideLeftEndPage > 1){
            $pageStr .= '<span style="font-size: 18px;">...</span>';
        }

        //中间分页
        for ($j = $midStartPage; $j <= $midEndPage; $j++) {
            if($j == $page){
                $pageStr .= '<a class="on" href="' . get_comments_pagenum_link($j) . '" >' . $j . '</a>';
            }else{
                $pageStr .= '<a href="' . get_comments_pagenum_link($j) . '">' . $j . '</a>';
            }
        }

        $sideRightStartPage = $max_page - $nextNum + 1;//右侧分页起始页码
        $sideRightStartPage = $sideRightStartPage > $midEndPage ? $sideRightStartPage : $midEndPage + 1;//右侧分页起始页码如果小于或者等于中间分页的结尾页码，则变为中间分页的结尾码加1（即右侧分页起始页码一定要比中间分页的结尾页码大）

        //如果中间起始页码和右侧分页的起始页码的差值大于1，则显示省略号
        if($sideRightStartPage - $midEndPage > 1){
            $pageStr .= '<span style="font-size: 18px;">...</span>';
        }

        //右侧分页
        for($k = $sideRightStartPage; $k <= $max_page; $k++){
            $pageStr .= '<a href="' . get_comments_pagenum_link($k) . '">' . $k . '</a>';
        }

        //最大页码大于1且当前页码小于最大页码时显示下一页按钮
        if ($page <= $max_page - 1) {
            $pageStr .= '<a class="next" href="' . get_comments_pagenum_link($page + 1) . '">&gt;</a>';
        }
    

        $pageStr .= '<span class="pagination-total">共<em>' . $max_page . '</em>页，</span>';

        $pageStr .= '<div class="pagination-input"><span>跳转至</span><input type="text"><span>页</span><a class="pagination-go" href="javascript:;">跳转</a></div>';

        echo $pageStr;
    } 
    /**
    * getPostViews()函数
    * 功能：获取阅读数量
    * 在需要显示浏览次数的位置，调用此函数
    * @Param object|int $postID   文章的id
    * @Return string $count          文章阅读数量
    */
    function getPostViews( $postID ) {
        $count_key = 'post_views_count';
        $count = get_post_meta( $postID, $count_key, true );
        if( $count=='' ) {
            delete_post_meta( $postID, $count_key );
            add_post_meta( $postID, $count_key, '0' );
            return "0";
        }
    return $count;
    }


    /**
    * setPostViews()函数  
    * 功能：设置或更新阅读数量
    * 在内容页(single.php，或page.php )调用此函数
    * @Param object|int $postID   文章的id
    * @Return string $count          文章阅读数量
    */
    function setPostViews( $postID ) {
        $count_key = 'post_views_count';
        $count = get_post_meta( $postID, $count_key, true );
        if( $count=='' ) {
            $count = 0;
            delete_post_meta( $postID, $count_key );
            add_post_meta( $postID, $count_key, '0' );
        } else {
            $count++;
            update_post_meta( $postID, $count_key, $count );
        }
    }

    //限制文章摘要的字数
    function new_excerpt_length($length) {
        return 80;
    }
    add_filter("excerpt_length", "new_excerpt_length");

    function new_excerpt_more($more) {
        return ' ...';
    }
    add_filter('excerpt_more', 'new_excerpt_more');

    /**
     * 让 WordPress 只搜索文章的标题
     * https://www.wpdaxue.com/search-by-title-only.html
     */
    function __search_by_title_only( $search,$wp_query )
    {
        global $wpdb;
    
        if ( empty( $search ) )
            return $search; // skip processing - no search term in query
    
        $q = $wp_query->query_vars;    
        $n = ! empty( $q['exact'] ) ? '' : '%';
    
        $search =
        $searchand = '';
    
        foreach ( (array) $q['search_terms'] as $term ) {
            $term = esc_sql( like_escape( $term ) );
            $search .= "{$searchand}($wpdb->posts.post_title LIKE '{$n}{$term}{$n}')";
            $searchand = ' AND ';
        }
    
        if ( ! empty( $search ) ) {
            $search = " AND ({$search}) ";
            if ( ! is_user_logged_in() )
                $search .= " AND ($wpdb->posts.post_password = '') ";
        }
    
        return $search;
    }
    add_filter( 'posts_search', '__search_by_title_only', 500, 2 );

    //搜索结果排除所有页面
    function search_filter_page($query) {
        if ($query->is_search) {
            $query->set('post_type', 'post');
        }
        return $query;
    }
    add_filter('pre_get_posts','search_filter_page');

    /**
     * WordPress 设置相册图集（galleries）默认的图片大小
     * https://www.wpdaxue.com/set-the-default-image-size-in-wordpress-galleries.html
     */
    remove_shortcode('gallery');
    add_shortcode('gallery', 'custom_size_gallery');
    function custom_size_gallery($attr) {
        $attr['size'] = array(1258, 1718);
        return gallery_shortcode($attr);
    }

    //留言模板
    function fo_comment($comment, $args, $depth) 
    {
        $GLOBALS['comment'] = $comment; ?>
        <?php if (($comment->comment_approved != '0')&&(count($comment->get_children()) > 0)) :?>
            <li id="li-comment-<?php comment_ID(); ?>">
                <div class="msg-info clearfix">
                    <p class="name">发布者：<?php printf(__('<span>%s</span>'), get_comment_author_link()); ?></p>
                    <p class="date">发布时间：<?php echo get_comment_time('Y-m-d H:i'); ?></p>
                </div>
                <div class="msg-word"><span>留言：</span><?php comment_text(); ?></div>
                <p class="reply">【回复】
                <?php 
                    foreach($comment->get_children() as $children) {
                        echo $children->comment_content;
                    }
                ?>
                </p>
            </li>
        <?php elseif (($comment->comment_approved == '0')&&(count($comment->get_children()) == 0)) :?>
        <li id="li-comment-<?php comment_ID(); ?>">
            <div class="msg-info clearfix">
                <p class="name">发布者：<?php printf(__('<span>%s</span>'), get_comment_author_link()); ?></p>
                <p class="date">发布时间：<?php echo get_comment_time('Y-m-d H:i'); ?></p>
            </div>
            <div class="msg-word"><em>你的评论正在审核，稍后会显示出来！</em><br /></div>
            </p>
        </li>
        <?php endif;?>

    <?php } ?>